// 求两个对象的差集
interface IPerson1 {
  name: string;
}
interface IPerson2 {
  name: number;
  age:string
}
// 1 - 2  -> age address  {age,address}
type Diff<T, K> = Omit<T, keyof K>; //
type SelectDiff = Diff<IPerson1, IPerson2>;

// 交集？ Pick
type Inter<T, K> = Pick<K, Extract<keyof T, keyof K>>; // 这里交集可能出现never ， 我是一一方为准 来计算出来的
type SelectInter = Inter<IPerson1, IPerson2>;


// 用Pick的时候以谁为准
type Merge<T,K> = Diff<T, K> & K;
type Compute<T> = {[P in keyof T]:T[P]} 


// 这个地方必须在调用的时候 告诉人家 谁盖掉谁
type SelectMerge = Compute<Merge<IPerson2,IPerson1>>; // 后面的和前面的覆盖掉 合并在一起

// 掌握合并对象的问题 2 盖掉1的问题



export {};



